// pages/login/login.js
const api = require("../../comm/api")
const http = require("../../utils/http")
const sto = require("../../utils/sto")

import Notify from '../../components/@vant/weapp/notify/notify';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 账号
    userName: '',
    // 密码
    password: '',
    // 账号出错提示
    userName_error: "",
    // 密码出错提示
    password_error: "",
    // 按钮是否正在加载标识
    isloading: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 表单提交按钮处理事件
   * @param {*} e 表单提交按钮事件对象
   * .detail.value值为表单提交的账号和密码信息
   */
  onSubmit: function (e) {
    // 获取表单提交的信息：账号和密码
    const params = e.detail.value
    // 获得表单中账号提交状态
    const userName_valied = !!params.userName
    // 获取表单中密码提交状态
    const password_valied = !!params.password
    // 设置账号与密码提交状态到data
    this.setData({
      userName_error: userName_valied ? "" : "账号不能为空",
      password_error: password_valied ? "" : "密码不能为空",
    })
    // 判断账号和密码是否已经全部输入
    if (userName_valied && password_valied) {
      // 已经全部输入，则设置按钮为提交状态
      this.setData({
        isloading: true
      })
      // 通过http.postJSON方法提交登录信息
      http.postJSON(api.User.Login.PATH, params, (pojo) => {
        // 保存用户登录账号与密码，预备下次自动登录
        sto.saveUser(params)
        // 保存令牌到数据缓存
        sto.saveToken(pojo.token)
        // 登录成功，则进行提示
        Notify({
          type: "success",
          message: "登录成功",
          duration: 1000,       // 延时1秒
          onClose: () => {      // 通知关闭后执行
            // 跳转到主页
            wx.switchTab({
              url: '/pages/home/home',
            })
          }
        })
      }, (err) => {
        // 登录失败，设置按钮为正常状态
        // 即允许再次单击提交
        this.setData({
          isloading: false
        })
        // 提示登录失败
        Notify({
          type: "warning",
          message: "登录失败：" + JSON.stringify(err)
        })
      })
    }
  },

/**
 * 注册按钮单击处理事件
 * @param {*} e 单击事件信息
 */
  toRegister: function (e) {
    // 跳转到注册页面
    wx.navigateTo({
      url: '/pages/register/register',
    })
  }
})